Skip to content

[WIP] coco: HTTP bridge, Vite plugin, init flow & overlay UI#780

Draft
jherr wants to merge 14 commits into
mainfrom
coco
Draft

[WIP] coco: HTTP bridge, Vite plugin, init flow & overlay UI#780
jherr wants to merge 14 commits into
mainfrom
coco

Conversation

@jherr

@jherr jherr commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

🚧 WIP — do not merge. Draft for early visibility and feedback.

Summary

Work-in-progress on coco, a CLI dev-overlay coding agent bundled with a sample app, plus supporting harness adapters in the TanStack AI ecosystem.

This branch builds on the recently landed coco example and adds:

  • HTTP bridge (examples/coco/src/http-bridge.ts) for the dev overlay
  • Vite plugin (examples/coco/src/vite/plugin.ts) integration
  • init flow (examples/coco/src/init.ts) and package entry (src/index.ts)
  • Overlay UI updates across the client (client/index.ts, client/panel.ts, agent-status.ts, cli.ts, proxy.ts)

It also merges the latest main, which brings in new e2e coverage, image/video generation specs, and the consolidated NoOpChatDevtoolsBridge parity stubs.

Status / TODO

  • Stabilize HTTP bridge + Vite plugin wiring
  • Finalize init flow UX
  • Tests / e2e coverage for new coco surfaces
  • Docs pass

Notes

  • Changes are scoped to examples/coco/** plus the main merge.
  • Opening as a draft to share direction early; not ready for review-to-merge yet.

🤖 Generated with Claude Code

jherr and others added 12 commits June 12, 2026 07:00
…xample

New @tanstack/ai-claude-code package that runs Claude Code (via
@anthropic-ai/claude-agent-sdk) as a TanStack AI chat backend. Unlike HTTP
provider adapters, this is a harness adapter: Claude Code owns the agent
loop and executes its built-in tools (bash, file edits, search) server-side.

- Stream translator maps Agent SDK messages to AG-UI events; harness tool
  activity arrives as already-resolved TOOL_CALL_*/TOOL_CALL_RESULT pairs
  and runs always finish with stop/length (never tool_calls), so the engine
  never re-executes harness tools. Every started tool call is guaranteed a
  result (synthesized on abort) to keep the engine's pending-call scan safe.
- TanStack toolDefinition() server tools are bridged into the harness as an
  in-process MCP server (raw JSON Schema passthrough, no zod round-trip).
  Client-side/approval tools fail fast — documented v1 limitation.
- Stateful sessions: session id surfaced via a claude-code.session-id CUSTOM
  event; resume via modelOptions.sessionId (+ forkSession).
- Structured output uses the SDK's native outputFormat json_schema.
- settingSources defaults to ['project'] so servers don't inherit user-level
  ~/.claude config from the host machine.
- E2E: excluded from the aimock matrix (subprocess can't carry X-Test-Id
  isolation); covered by 44 unit tests plus a gated live smoke spec
  (CLAUDE_CODE_E2E=1).

Also adds examples/ts-react-coding-agent: a TanStack Start app demoing
session resume, the harness tool timeline, read-only/edit permission modes,
tool bridging, and a sandboxed scratch workspace — with the agent registry
structured so future Codex/Gemini CLI harness adapters can slot in.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ters

Add two new coding-agent harness adapters alongside Claude Code:

- @tanstack/ai-codex drives OpenAI Codex via @openai/codex-sdk with local
  tool execution, resumable sessions (modelOptions.sessionId), structured
  output, and a localhost MCP bridge for TanStack server tools.
- @tanstack/ai-gemini-cli drives `gemini --acp` over the Agent Client
  Protocol with token-level streaming, resumable sessions, a configurable
  permission policy, and headless ACP auth method selection (authMethodId)
  so runs never stall on an interactive auth picker.

Wire both into the ts-react-coding-agent example: the agent dropdown keeps
every harness selectable, and a server function (createServerFn) reports
which agents are actually configured at runtime so the UI can surface a
setup dialog for unconfigured ones. Includes adapter docs and changesets.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add the @tanstack/ai-opencode package, an OpenCode harness adapter that
drives OpenCode (via @opencode-ai/sdk) as a TanStack AI chat backend with
local tool execution, token-level streaming, stateful sessions, and
TanStack tool bridging over a localhost MCP server. Wires the adapter into
the ts-react-coding-agent example, adds the OpenCode adapter docs page, and
anchors the OpenCode.md gitignore entry so it no longer shadows the docs
page on case-insensitive filesystems.

Co-authored-by: Cursor <cursoragent@cursor.com>
Coco wraps a project's dev server with a reverse proxy that injects a
Shadow-DOM AI chat panel into every HTML response. The panel drives the
existing CLI-agent adapters (Claude Code, Codex, Gemini CLI, OpenCode)
with cwd pinned to the project, and forwards the current route plus the
currently picked element to the server as page context.

Adds a bundled sample-app under examples/coco/sample-apps/simple-app (a
freshly scaffolded TanStack Start app) so the example is exercisable
out of the box. The sample-app is intentionally NOT a workspace package
— pnpm scripts in coco's package.json handle install, dev, and a
git-restore-based reset that leaves node_modules intact.

Co-authored-by: Cursor <cursoragent@cursor.com>
So `pnpm --filter coco sample:reset` (which is `git restore` + `git clean`)
preserves them across resets, instead of forcing a full reinstall and
route-tree regenerate on every reset.

Co-authored-by: Cursor <cursoragent@cursor.com>
The no-op devtools bridge that ChatClient falls back to (when no
`devtoolsBridgeFactory` is supplied) was missing `mountWithTools`,
`notifyToolsChanged`, and `recordStreamId`. `ChatClient.sendMessage`
calls `mountDevtools()` which sets `devtoolsMounted = true` BEFORE
invoking `mountWithTools`, so the first send died with
`TypeError: this.devtoolsBridge.mountWithTools is not a function`,
the promise rejected (often silently), and every subsequent send
short-circuited past the broken line and worked. Symptom in the wild:
"first message does nothing, the second one works".

Also fix the structural-parity check that was supposed to prevent this
drift. `const x: Missing = undefined as never` always typechecks
(because `never` is assignable to anything), so the original assertion
was a no-op. Replaced with `type _AssertBridgeParity<T extends never>
= T`, which now fails the build the next time the real bridge grows a
public method the no-op doesn't stub.

Co-authored-by: Cursor <cursoragent@cursor.com>
The panel now makes it obvious when a turn is in progress so a quiet
agent (or a network/server failure) can't masquerade as "nothing
happened":

- A `status` state machine (idle → sending → streaming) drives:
  - a spinning ring + green pulsing dot on the 🥥 launcher (visible
    even when the panel is closed),
  - a "Coco is calling the agent…" / "Coco is working…" pill with
    three bouncing dots in the messages area,
  - a status bar at the bottom of the panel ("Sending to claude-code…"
    → "Streaming from claude-code…" → "Ready (claude-code, edit)"
    with a colored dot),
  - the Send button disables and shows "…" while non-idle.

- Removed the silent "not configured" gate. Previously, pressing Send
  before the async `/__coco/api/agents` check returned (or if it
  errored) would silently open the setup dialog instead of sending.
  `configured` is now `null` until the fetch lands, the panel never
  blocks sends on it, and a `null` fetch result no longer falsely
  shows every agent as unconfigured. The setup hint only appears once
  we *know* the agent is missing credentials.

- Surface `sendMessage` rejections via `console.error('[coco] …')` and
  the in-panel error band instead of swallowing them, plus a debug log
  on every submit so the path can be traced from the browser console.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
# Conflicts:
#	.gitignore
#	packages/ai-client/src/devtools-noop.ts
#	pnpm-lock.yaml
@coderabbitai

coderabbitai Bot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: af65bcde-0cf1-4bc0-885a-e4d3f548c333

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch coco

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@socket-security

socket-security Bot commented Jun 17, 2026

Copy link
Copy Markdown

Warning

Review the following alerts detected in dependencies.

According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.

Action Severity Alert  (click "▶" to expand/collapse)
Warn High
Obfuscated code: npm @emnapi/runtime is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: ?npm/@tanstack/router-plugin@1.168.18npm/@tailwindcss/vite@4.3.1npm/@tanstack/react-start@1.168.26npm/@tanstack/devtools-vite@0.8.0npm/nitro-nightly@3.0.1-20260623-055145-de9708f5npm/@vitejs/plugin-react@6.0.3npm/@emnapi/runtime@1.11.1

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@emnapi/runtime@1.11.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: npm css-tree is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: ?npm/jsdom@28.1.0npm/css-tree@3.2.1

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/css-tree@3.2.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: npm data-urls is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: ?npm/jsdom@28.1.0npm/data-urls@7.0.0

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/data-urls@7.0.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: npm env-runner is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: ?npm/nitro-nightly@3.0.1-20260623-055145-de9708f5npm/env-runner@0.1.14

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/env-runner@0.1.14. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: npm js-yaml is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: ?npm/@tanstack/react-start@1.168.26npm/js-yaml@4.2.0

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/js-yaml@4.2.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: npm jsdom is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: examples/coco/sample-apps/simple-app/package.jsonnpm/jsdom@28.1.0

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/jsdom@28.1.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: npm jsdom is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: examples/coco/sample-apps/simple-app/package.jsonnpm/jsdom@28.1.0

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/jsdom@28.1.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: npm seroval is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: ?npm/@tanstack/react-router-devtools@1.167.0npm/@tanstack/react-router-ssr-query@1.167.1npm/@tanstack/router-plugin@1.168.18npm/@tanstack/router-cli@1.167.17npm/@tanstack/react-router@1.170.16npm/@tanstack/react-start@1.168.26npm/@tanstack/react-devtools@0.10.7npm/seroval@1.5.4

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/seroval@1.5.4. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: npm yargs is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: ?npm/@tanstack/router-cli@1.167.17npm/yargs@17.7.3

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/yargs@17.7.3. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Publisher changed: npm yargs is now published by shadowspawn

Author: shadowspawn

From: ?npm/@tanstack/router-cli@1.167.17npm/yargs@17.7.3

ℹ Read more on: This package | This alert | What is unstable ownership?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Try to reduce the number of authors you depend on to reduce the risk to malicious actors gaining access to your supply chain. Packages should remove inactive collaborators with publishing rights from packages on npm.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/yargs@17.7.3. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

View full report

@nx-cloud

nx-cloud Bot commented Jun 17, 2026

Copy link
Copy Markdown

View your CI Pipeline Execution ↗ for commit a8014cf

Command Status Duration Result
nx affected --targets=test:sherif,test:knip,tes... ✅ Succeeded 6m 22s View ↗
nx run-many --targets=build --exclude=examples/... ✅ Succeeded 1m 22s View ↗

☁️ Nx Cloud last updated this comment at 2026-06-23 21:23:13 UTC

@github-actions

github-actions Bot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

🚀 Changeset Version Preview

6 package(s) bumped directly, 7 bumped as dependents.

🟨 Minor bumps

Package Version Reason
@tanstack/ai-claude-code 0.1.0 → 0.2.0 Changeset
@tanstack/ai-codex 0.1.0 → 0.2.0 Changeset
@tanstack/ai-gemini-cli 0.1.0 → 0.2.0 Changeset
@tanstack/ai-opencode 0.1.0 → 0.2.0 Changeset

🟩 Patch bumps

Package Version Reason
@tanstack/ai-client 0.18.2 → 0.18.3 Changeset
@tanstack/ai-mcp 0.1.6 → 0.1.7 Changeset
@tanstack/ai-angular 0.1.6 → 0.1.7 Dependent
@tanstack/ai-preact 0.9.11 → 0.9.12 Dependent
@tanstack/ai-react 0.15.11 → 0.15.12 Dependent
@tanstack/ai-solid 0.13.11 → 0.13.12 Dependent
@tanstack/ai-svelte 0.13.11 → 0.13.12 Dependent
@tanstack/ai-vue 0.13.11 → 0.13.12 Dependent
@tanstack/ai-vue-ui 0.2.23 → 0.2.24 Dependent

@pkg-pr-new

pkg-pr-new Bot commented Jun 17, 2026

Copy link
Copy Markdown

Open in StackBlitz

@tanstack/ai

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai@780

@tanstack/ai-angular

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-angular@780

@tanstack/ai-anthropic

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-anthropic@780

@tanstack/ai-claude-code

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-claude-code@780

@tanstack/ai-client

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-client@780

@tanstack/ai-code-mode

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-code-mode@780

@tanstack/ai-code-mode-skills

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-code-mode-skills@780

@tanstack/ai-codex

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-codex@780

@tanstack/ai-devtools-core

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-devtools-core@780

@tanstack/ai-elevenlabs

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-elevenlabs@780

@tanstack/ai-event-client

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-event-client@780

@tanstack/ai-fal

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-fal@780

@tanstack/ai-gemini

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-gemini@780

@tanstack/ai-gemini-cli

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-gemini-cli@780

@tanstack/ai-grok

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-grok@780

@tanstack/ai-groq

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-groq@780

@tanstack/ai-isolate-cloudflare

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-isolate-cloudflare@780

@tanstack/ai-isolate-node

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-isolate-node@780

@tanstack/ai-isolate-quickjs

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-isolate-quickjs@780

@tanstack/ai-mcp

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-mcp@780

@tanstack/ai-ollama

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-ollama@780

@tanstack/ai-openai

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-openai@780

@tanstack/ai-opencode

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-opencode@780

@tanstack/ai-openrouter

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-openrouter@780

@tanstack/ai-preact

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-preact@780

@tanstack/ai-react

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-react@780

@tanstack/ai-react-ui

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-react-ui@780

@tanstack/ai-solid

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-solid@780

@tanstack/ai-solid-ui

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-solid-ui@780

@tanstack/ai-svelte

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-svelte@780

@tanstack/ai-utils

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-utils@780

@tanstack/ai-vue

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-vue@780

@tanstack/ai-vue-ui

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-vue-ui@780

@tanstack/openai-base

npm i https://pkg.pr.new/TanStack/ai/@tanstack/openai-base@780

@tanstack/preact-ai-devtools

npm i https://pkg.pr.new/TanStack/ai/@tanstack/preact-ai-devtools@780

@tanstack/react-ai-devtools

npm i https://pkg.pr.new/TanStack/ai/@tanstack/react-ai-devtools@780

@tanstack/solid-ai-devtools

npm i https://pkg.pr.new/TanStack/ai/@tanstack/solid-ai-devtools@780

commit: a8014cf

Resolve docs/config.json conflict: keep coco's new CLI-adapter doc
entries (Claude Code, Codex, Gemini CLI, OpenCode) and main's
updatedAt bump on the OpenAI-Compatible entry — both sides kept.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant